#pragma once

class Disk
{
public:
	Disk();
	virtual ~Disk();
   void DrawDisk(CDC *pDC);
   void ShowData(CDC *pDC);

protected:
  void Reset();
  void    PushDisk(int val);
  void    LoseDisk();
  void    OffsetDisk(int offset);
  int     GetDiskIndex(int val);
  void    SetDiskIndex(int index){m_disk_index=index;}
  BYTE    GetDiskOffsetAt(int offset);
  int     GetDiskSegmentFlag(int offset);
  BOOL    IsFullFillLower(int nSpace);
  int     GetTotalFlag();
  void    FindDiskSpace();
  BYTE    CurrentFlag(){return m_disk_flag[m_disk_val[m_disk_index]];}
  BYTE    CurrentValue(){return m_disk_val[m_disk_index];}
  BOOL    HasWaitValue(int val);

protected:
  int         m_disk_val[37];
	CByteArray  m_disk_record;
  BYTE        m_disk_flag[37];
  int         m_disk_index;
  std::vector< std::vector<BYTE> > m_disk_space;
};

